package com.hbu.housingbrokeruganda.Parser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

/**
 * 
 * @author Lubwama Samuel
 *
 */
public class JSONParser {
	// constructor
	public JSONParser() {

	}
	// function get json from url
	// by making HTTP POST or GET mehtod
	public JSONObject makeHttpRequest(String url, String method,List<NameValuePair> params) {
		InputStream is = null;
		JSONObject jObj = null;
		int testHttpResponse = 0;
		String json = "";

		// Making HTTP request
		try {		
			// check for request method
			if(method == "POST"){
				// request method is POST
				// defaultHttpClient
				DefaultHttpClient httpClient = new DefaultHttpClient();
				HttpPost httpPost = new HttpPost(url);
				httpPost.setEntity(new UrlEncodedFormEntity(params));

				HttpResponse httpResponse = httpClient.execute(httpPost);
				HttpEntity httpEntity = httpResponse.getEntity();
				testHttpResponse=httpResponse.getStatusLine().getStatusCode();
				is = httpEntity.getContent();
			}else if(method == "GET"){
				// request method is GET
				Log.d("Parameter Values", params+"");
				DefaultHttpClient httpClient = new DefaultHttpClient();
				String paramString = URLEncodedUtils.format(params, "utf-8");
				url += "?" + paramString;
				HttpGet httpGet = new HttpGet(url);

				HttpResponse httpResponse = httpClient.execute(httpGet);
				testHttpResponse=httpResponse.getStatusLine().getStatusCode();
				HttpEntity httpEntity = httpResponse.getEntity();
				is = httpEntity.getContent();	
			}			
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		if(testHttpResponse==200){
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
			StringBuilder sb = new StringBuilder();
			String line = null;
			while ((line = reader.readLine()) != null) {
				sb.append(line + "\n");
			}
			is.close();
			json = sb.toString();
		} catch (Exception e) {
			Log.e("Buffer Error", "Error converting result " + e.toString());
		}
	
		// try parse the string to a JSON object
		try {
			jObj = new JSONObject(json);

		} catch (JSONException e) {
			Log.e("JSON Parser", testHttpResponse+"Error parsing data " + e.toString());
		}
		}
		else{
			try{
			String failed= "{\"success\":\"0\"}";
			JSONObject jObj1 = new JSONObject(failed);
			
			jObj=jObj1;
			}catch(Exception e){
				Log.e("ERROR", e.toString());	
			}
		}
       //  Log.d("CONTENT", jObj.toString());
		// return JSON String
		return jObj;
	}
}
